Multiprocessing computer system



March 7, 1967 FALKOFF Re. 26,171

MULTIPROCESS ING COMPUTER SYSTEM Original Filed March 2, 1962 17 Sheets-Sheet 1 MAIN II2 FIG. IO MEMORY INSTRUCTION H5 READY MEMORY l PROCESSING PROCESSING PROCESSING PROCESSING PROCESSING] ELEMENT ELEMENT ELEMENT ELEMENT ELEMENT L A B C D E L. I SYMBOL IN FlELD e22 PROCESSING TYPE OF ELEMENT WHICH REPRESENTS THE ELEMENT PARTICULAR TYPE T OF ELEMENT A ADDTHDN ULTIPLICATIDN no I l a ADDITION ,MULTIPLICATION 440 I C LOGICAL OPERATOR 01o EL... 7". D INPUT ,OUTPUT 004 T E GENERAL PURPOSE COMPUTER 10o INVENTOR F|G 1b AM 0. FALKOFF BY gav ATTORNEY March 7, 1967 A. D. FALKOFF MULTIPROCESSING COMPUTER SYSTEM 17 Sheets-Sheet 5 Original Filed March 2, 1962 $6 QC EH SE $2 mSN E8 Quiz? 2% 22 A A 5&2? EN 33 r 7 EN EN mm 7 t mm: a H r 7 3 25 J W m 2: 3 92 r m 2 m5 3% $8 w JJ V x $88 mmom V (NON March 7, 1967 A. D. FALKOF'F MULTIPROCESS ING COMPUTER SYSTEM Original Filed March 2, 1962 17 Sheets-Sheet 8 FIG 3 J2 H/ T4 INSTRUCTION FIELD INTERROW'ON T5 READY 423 REGISTER BOI I MEMORY TIMER 22 SEQUENCE CONTROL m P32? CODE cDDE CODE CODE MIIE 5128K mc M20) N25 l LATCH LIIcII LATCH LATCH LATCH I 2 3 4 5 s R s R s R s R s R I i 1 i i EIIAAM mm was.- 5mm IIIEI,

311A 3% 3H0 SHD SHE r" f Now-m J (AND AND [AND AND AND IIIM CIRCUIT rm (5'08 2I00 PIUA /3|0C 2IOE\ 2I0B ,mc {510D [SIDE 25 2SI INSTRUCTION 2 3x REQUEST) 2IIIII-- I;

March 7, 1967 A. D. FALKOFF MULTIPROCES S ING COMPUTER SYSTEM Original Filed March 2, 1962 17 Sheets-Sheet 9 MAW MEMORY 's-4 SEQUENCE CONTROL 4a 4b l TIMER 400 407 1 m A M1 525111.111" N41 n2 m WW5 H5 495 494 I 495 492 r ANDI/ AND AND AND AND /491 l i I I 1 1 sa W 1 OR E 55 484 463 432 48: A4. "L weenm; i 1 gAND [AND AND AND AND 1 466A i 1 L I 466 466B 5 [4660 H I [4660 m I If DI [466E E E A. .7 .4. i A I W OR 455 464 Z463 462 161 [LATCH LATCH LAgcH LAgGH LATCH NOT WM 5 R s R s R s R s n 489 l i 2 l L ilid r g 1* 7 125f ns 474 475 M72 4?1 g [AND] AND AND] AND AND 213 213m mm L... I 2130 mE A. D. FALKOFF MULTIPROCESSING COMPUTER SYSTEM March 7, 1967 17 Sheets-Sheet 11 Original Filed March 2, 1962 M OUT PUT OF TIMER 322 \NPUT ACTIVE INPUT 1 INACTIVE m L, M V

\ \NPUT ACTIVE PTES March 7, 1967 A. D. FALKOFF MULTIPROCESSING COMPUTER SYSTEM 17 Sheets-Sheet 14 Original Filed March 2, 1962 maEC :2

mw mmm im a;

2 EEDQ E E5 :2: 3mm B8 new A M r? V J @E W F 2m mwmmood cm a m w u L March 7, 1967 Original Filed March 2, 1962 FIG.IO

TIMER DETECTS IOII IN FIELD I24 OF REGISTER A. D. FALKOFF MULTIPROCESSING COMPUTER SYSTEM 17 Sheets-Sheet 16 OUTPUT 0F TIMER 821 DTI IJUA

IJMA

DTSA

DT6A

DT5B BT48 M UTBB 0n ma n ivivw REPEAT UNTIL GOMPARI' cmcun INDICATESA CQMPARISON I I I March 7, 1967 Original Filed March 2, 1962 A. D. FALKOFF MULTIPROGESSING COMPUTER SYSTEM 17 Sheets-Sheet 1 7 c121) uzm uzm 124 (125) uz iOH United States Patent 26.171 MULTIPROCESSING COMPUTER SYSTEM Adin D. Faiirotf, Croton-on-Hudson, N.Y., assignor to International Business Machines Corporation, New York,

N.Y., a corporation of New York Original No. 3,229,260, dated Jan. 11, 1966, Ser. No.

176,940, Mar. 2, 1962. Application for reissue June 1,

1966, Ser. No. 560.366

20 Claims. (Cl. 340172.5)

Matter enclosed in heavy brackets appears in the original patent but forms no part of this reissue specification; matter printed in italics indicates the additions made by reissue.

This invention relates to digital computers and more particularly to digital computers which are capable of simultaneously operating upon several interdependent or independent instruction sequences.

Computing systems known in the prior art have been capable of simultaneously operating upon several interdependent or independent instruction sequences, that is, multiprocessing. Such systems require a supervisory program which controls the progress of the various instruction sequences through the system. The complexity of the supervisory program depends upon the degree to which the execution of the various instruction sequences is integrated in the system. If, with the systems of the prior art. an attempt is made to have a high degree of simultaneity relative to the execution of several instruction sequences, the supervisory program becomes complex and a large amount of the systems time is consumed by the supervisory program in order to perform the necessary transfer and control functions (i.e., the necessary housekeeping operations). Some of the transfer and control operations can be taken care of by a compiler program rather than by a supervisory program; however, if this is done, the system will lack flexibility and furthermore, the compiler program must be made complex thus occupying more of the systems time.

Stated differently, with the systems of the prior art, it a system is merely executing one instruction sequence, practically the entire capabilities of the system can be devoted to executing this one instruction sequence; however, if a system is simultaneously executing two or more interdependent or independent instruction sequences, a considerable amount of the systems time must be devoted to housekeeping operations. Furthermore, the multiprocessing systems known in the prior art do not make efficient use of all of the hardware in the system. The present invention is directed at a computing system which can simultaneously execute a plurality of interdependent or independent instruction sequences, and wherein the progress of the various instruction sequences being executed by the system at any one time is not established by a compiler program or controlled by a supervisory program.

The system of the present invention includes a plurality of autonomous computing elements and an associate memory. Each autonomous computing element is essentially a computer which after it has been given an instruction is capable of independently operating upon the instruction to generate a specified result. Each autonomous computing element may be a simple computing element such as an adder which is merely capable of requesting an instruction and after it has been given an instruction of obtaining an augend and an addend from memory. generating their sum, placing the sum in memory and then requesting another instruction. On the other hand, certain of the autonomous computing elements may be complex computing systems which, once they have been given an instruction, are capable of operating independently using subroutines which are stored within the elements.

Reissued Mar. 7, 1967 'ice With the present system, a plurality of interdependent or independent instruction sequences (hereinafter termed programs) are stored in the associative memory. Each of these programs consists of a plurality of instruction words which must be operated upon in some established sequence. The instruction words of the various programs may be intermixed in the memory, that is, it is not required that all of the instructions of one program be stored in sequential locations in the memory.

Each instruction includes in addition to an indication of the particular operation which is to be performed (ll a first field which identifies the program with which the particular instruction is associated, (2) a second field which identifies the position which the particular instruc tion occupies in the sequence of instructions which form the particular program with which the particular instruction is associated, and (3) a third field which identifies the particular type of computing element needed in order to execute the particular instruction. The system includes means for identifying when a particular instruction is ready for execution.

Whenever an autonomous computing element becomes idle, it interrogates the memory to find an instruction which is then ready for execution and which by the information in its third field contains an indication that it can be executed by the particular autonomous computing element which is interrogating the memory. If such an instruction is found, it is sent to the particular element for execution. After an element completes the execution of an instruction, the system indicates that the next instruction which is in the same program as the com pleted instruction is ready for execution. This next instruction will remain in memory until an autonomous computing element which is capable of executing the particular instruction becomes idle and interrogates the memory to find an instruction which it can execute. Therefore, it can be seen that the instructions in a par ticular sequence need not all be executed by the same autonomous computing element.

One of the reasons that the first and second fields in each instruction word (i.e., the fields which identify the particular program with which the instruction is associated and the particular location of the instruction in the particular program) are needed is so that after each instruction has been executed, the system will know which other instruction is thereby made ready for execution.

An object of the present invention is to provide an improved computing system.

A further object of the present invention is to provide a computing system which is capable of simultaneously operating upon a plurality of independent programs.

Yet another object of the present invention is to provide a computing system which has a plurality of autonomous computing elements in which all information relating to the sequence and progress of a program during execution is held in a memory which is common to all autonomous computing elements.

Still another object of the present invention is to provide a computing system with a plurality of autonomous computing elements each of which can work independently on any one of a plurality of stored programs as the condition of these programs requires and dictates.

Yet another object of the present invention is to provide a system which allows program sequences to fan-out and fan-in merely as a result of the information stored in the instruction words themselves.

Yet another object of the present invention is to provide a multiprocessing system in which the hardware in the system is used in the most efficient manner possible in order to process a plurality of programs.

Yet another object of the present invention is to proa vide a multiprocessing system in which the hardware in the system is used in the most efficient manner possible in order to process a plurality of programs in a priority order established by information in the instruction words of the programs.

Yet another object of the present invention is to provide a computing system which can be easily expanded or contracted as required.

Yet another object of the present invention is to provide a computing system which is adapted to be manufactured in the modular concept with independent replaceable units.

The foregoing and other objects, features and advantages of the invention will be apparent from the following more particular description of preferred embodiments of the invention, as illustrated in the accompanying drawings.

In the drawings:

FIGURE la is an information flow diagram which shows the overall organization of the system.

FIGURE 1b is a chart which specifies the general characteristics of the processing elements as shown in FIG- URE 1a.

FIGURE 1c is a diagram which shows the format of an instruction word.

FIGURE 1d is a diagram which shows the format of a data word.

FIGURE 1e is a diagram which shows four instruction words which are in the instruction ready memory at one particular time.

FIGURES 2a, 2b, 2c, 2d and 2e (which fit together as shown in FIGURE 2) are an overall circuit diagram of the system.

FIGURE 3 is a detailed circuit diagram of the instruction memory sequence control circuit shown in FIG- URE 2a.

FIGURES 4a and 4b (which fit together as shown in FIGURE 4) are detailed circuit diagrams of the main memory sequence control circuit shown in FIGURE 2a.

FIGURE 5 is a timing diagram which shows the output of the timer shown in FIGURE 3.

FIGURE 6 is a timing diagram which shows the output of the timer shown in FIGURE 4a.

FIGURES 7a and 7b (which fit together as shown in FIGURE 7) are circuit diagrams of processing element A which is shown in FIGURES la and 2c.

FIGURE 8 is a circuit diagram of processing element D which is shown in FIGURES la and 2e.

FIGURE 9 is a circuit diagram of processing element C which is shown in FIGURES la and 2d.

FIGURE 10 is a timing diagram of the output of the timer shown in FIGURE 9.

FIGURE 11 is a detailed circuit diagram of add one adder shown in FIGURE la.

FIGURE l2a is a diagram of instructions used to explain sequence combining.

FIGURE 12b is a diagram of an end of sequence instruction.

General description of major components of the system A general overall flow diagram of the system is shown in FIGURE la. The system consists of a main memory 112, an instruction ready memory 113 and five processing elements A, B, C, D and E.

Each of the processing elements A to E is an autonomous (or independent) computing element. Each of the processing elements A to E receives instruction from instruction ready memory 113; however, after a particular processing element receives an instruction it proceeds to execute this instruction while operating independently from the rest of the system. After a processing element completes the execution of an instruction, it signals the system that it has finished executing the instruction and that it is ready to receive another instruction. The type 4 of operation which each of the processing elements A to E is capable of performing is tabulated in the chart of FIGURE 1b.

Each of the memories 112 and 113 is an associative or content addressed memory. That is, a word is addressed and read out of a memory location, not by specifying the address of the particular memory location where the word is stored, but instead by specifying the information contained in one or more particular fields in the word. Memory 113 also has the further capabilities as specified below. When one specifies the content of a particular field (hereinafter called the type of element field) of the instruction word which one desires to readout, and there are two or more instruction words in the memory 113 which have the specified information in the specified field, memory 113 has the ability to examine another field in these instruction words (called a priority field) to determine which one of the instruction words has the highest priority. If more than one of these instruction words has the same priority memory 113 has the still further ability to readout the particular one of these instruction words which has been stored in memory 113 for the longest period of time. The details of memories 112 and 113 will be explained later.

In the particular embodiment of the invention shown herein, each instruction word has nine fields 121 to 129 as shown in FIGURE 1c. The information stored in field 121 of each instruction word is termed the program tag and it specifies the particular program (or instruction sequence) with which the particular instruction word is associated. The information stored in field 122 of each instruction word is termed the address symbol and it specifies the location of the particular instruction in the program specified by the program tag in field 121 of the particular instruction. The information stored in field 123 of each instruction word indicates the type of element needed to perform the particular instruction and the information in field 124 of each instruction word indicates the particular operation which is to be performed. The information stored in field 125 of certain instruction words is termed the sequence combining tag, the function of the sequence combining tag will be explained later.

Depending upon its importance, each program has a priority rating assigned thereto, the more important programs being given higher priority. The information in field 126 specifies the priority of the particular program with which the particular instruction is associated.

The information stored in fields 127, 128 and 129 are operand symbols which either specify operands upon which the particular instruction is to operate, or which specify the identification in memory of the operands upon which the particular instruction is to operate. Naturally, as in other computing systems, the operand fields may also contain information required in order to execute a transfer or decision instruction. Herein each instruction word is shown as containing three operand symbols in fields 127, 128 and 129. Three fields are shown merely for the purpose of illustration and naturally, in accordance with techniques known in the art, more or less operand fields could be used in various known ways. The main memory 112 also has stored therein data words which are associated with the various programs.

Each of the data words stored in main memory 112 has the format shown in FIGURE 1d which includes the three fields 131, 132 and 133. The data per se is stored in field 133. The information in field 131 specifies the particular program with which the data stored in field 133 is associated. The information which is stored in field 132 of any data word specifies a particular data word out of all the data words which are associated with the pro gram whose identification is specified in field 131.

The general capability of each of the processing ele ments A, B, C, D and E is specified in the second column of FIGURE 1b and the particular binary number (in field 123 of an instruction word) which specifics each type of processing element is listed in the third column of FIG- URE lb. As indicated by the chart of FIGURE lb, both processing element A and processing element B are capable of performing addition and multiplication and the binary number 110 in field 123 of an instruction indicates that it must be performed by the type of a processing element which is capable of addition and multiplication (i.e., the instruction must be performed by either processing element A or processing element B). However, the instruction words do not specify which particular process ing element must execute the particular instruction. Dcpending upon the frequency of use, more or less of a particular type of processing element can be added into the system. Herein the particular processing elements which are shown (two of which are type 110) are merely meant to be illustrative for the purpose of explaining the invention and it should be understood that various other types of processing elements can be added into the system.

General description of an example of the operation of the system For present purposes of illustration, the system will be assumed to be operating upon four independent programs which are stored in memory 112. Each of the four programs stored in memory 112 consist of one ordered sequence of instructions. Each instruction has a format shown in FIGURE 1c. At any particular time, there is one instruction in each sequence of instructions (ie in each program) which is ready for execution. Whenever an instruction becomes ready for execution, it is transferred (in a manner which will be explained in detail later) from main memory 112 into the instruction ready memory 113.

Since the system is operating upon four independent programs (each of which for the present discussion is assumed to have only one sequence of instructions), there will be at any particular time only four instructions in the instruction ready memory 113. For purposes of illustration, four particular instruction words 141 to 144 which may be in instruction ready memory 113 at one particular time are shown in FIGURE le. Naturally, the size of each of the fields in the instruction words is here chosen merely for the purpose of illustration and these fields may be any size which is needed in the particular application of the invention.

For convenience in reference between the specification and the drawings, each of the fields of the words 141 to 144 is identified by a numeral followed by a letter. The numeral which identifies each field is the same as the numeral which identifies the same type of field in FIG- URE 1c. Each set of numerals which identifies a field in instruction word 141 is followed by the letter G, each set of numerals which identifies a field in instruction word 142 is followed by the letter H, each set of numerals which identifies a field in instruction word 143 is followed by letter I, and each set of numerals which identifies a field in the instruction word 144 is followed by the letter J.

The information in fields 121G to 121] identifies the four programs with which the four particular data words are associated, and the information in fields 1226 to 122] identifies the particular position which each instruction occupies in its associated program.

The information in fields 1236 to 123] identifies the type of element which is capable of executing the respective instructions. It should be noted that both instruction 141 and instruction 142 can be executed by the same type of element identified by the binary number 110 in fields 123G and 123H. Instructions 143 and 144 must be executed by other types of elements as indicated by the binary numbers in fields 1231 and 123].

As previously stated, whenever a processing element becomes idle it requests an instruction from instruction ready memory 113. When the system receives such a request, the system interrogates memory 113 to find if there is an instruction therein which has in field 123 the symbol which indicates that the particular instruction can be performed by the element which is requesting the instruction. In the present case, when processing element 13 indicates that it needs an instruction, the system interrogates instruction ready memory 113 to find if any of the instruction words therein has the symbol lltl in field 123. In the example presently being diSClhffiCl. the four instructions shown in FIGURE le are in the memory and hence the system finds that both instructions 141 and 142 have the symbol lit) in field 123. Since two instructions are found which are capable of being executed by cle ment B, the system interrogates fields 126 of there two instructions to determine which has the highest priority. in the present case, the number stored in the field 126H is greater than the number stored in field 1266 and hence the memory reads out instruction 142 and passes it to processing element B. If both instructions 141 and 142 had the same number stored in their priority fields. the system would readout the particular instruction which had been stored in instruction ready memory 113 for the longest period of time (the details of memory 113 are given later).

After a processing element receives an instruction, it operates independently of the remainder of the system. First it interrogates field 124 of the instruction which it has received to determine the operation which it is to per form. it then requests from main memory 112 any data which is required and after it has received the required data, it performs the desired operation. After the operation has been performed, the processing element stores the result in the main memory 112 (it the instruction which it receives indicates that this is what is to be done). Once the complete operation has been performed (and if required the result has been stored in main memory 112) the processing element signals the system that it has completed the instruction which it received.

When the system receives an indication that a processing element has completed an instruction, it interrogates the procesing element to determine the particular program and the particular instruction upon which the processing element has been working. After the system has determined this information, it interrogates the main memory 112 and brings the next instruction in the same program into the instruction ready memory 113. Simultaneously (subject to certain limitations discussed later) with the above operation, the system interrogates the instruction ready memory to determine if there is another instruction in the instruction ready memory which the processing element can perform. Thereafter, the general cycle described above is repeated.

Practically an unlimited queuing facility can be obtained through the use of priority field and further more a program such as a diagnostic program can be assigned the highest priority thereby insuring that it will be executed by the system in preference to all other programs in the system.

Functional description of major components of the system We will now give a more detailed explanation of the system with reference to detailed circuit diagram shown in FIGURES 2a, 2b, 2c, 2d and 2e. FlGURES 2a, 2b, 2c, 2d and 2e which fit together as shown in FIGURE 2, shows in the interconnections between the major components.

It should be noted that two different types of interconnections between the various components are shoun in the circuit diagrams of FIGURES 2a, 2b, 2c, 2d and 2e. Single line connections which merely transmit one signal between components are represented by single lines and cables which simultaneously transmit a plurality of signals between components are designated by dual 

